草庐IT

QT非UI线程更新UI(跨线程更新UI)

笔者最近在弄一个QT的一个小工具,需要把日志格式化输出,但是方法的执行过程是耗时的,如果不自己进行处理就会阻塞主界面,瞬间降低软件的使用体验。所以通过查资料发现QT的信号传递更新UI非常好用,记录一下,也给碰到类似问题的小伙伴直接提供一个参考。首先,另起的UI线程需要自己重写类继承Qthread线程基类,需要Q_OBECT宏具体代码如下(我这里新建的命名位XThread的类)XThread.h如下#includeclassXThread:publicQThread{Q_OBJECTpublic:XThread();protected:voidrun();signals:voidtoUI(QSt

Qt安装工具MaintenanceTool安装插件出现无法下载存档的解决方法

问题背景:在移植Qt项目时,代码中出现头文件QTextCodec无法找到的错误(QTextCodec是Qt5中的类,Qt6删除了该类),我使用的是Qt6版本,查阅解决方法,找到的方法要在Qt安装工具MaintenanceTool中添加组件Qt5CompatibilityModule遇到的问题: 1、点击添加或移除组件都会出现提示:YourMaintenanceToolappearstobeolderthan3.0.2PleaseupdateitfirsttogetaccesstonewQtpackages 2、添加组件,在下载的过程中出现:无法下载存档http://download.qt.io

使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能

在上一篇,我们搭建了开发环境。本篇,使用C++代码真正实现功能。我们使用UDP协议从手机上指定发送的目的地、端口。效果如下图,完整工程参考https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/android/sensors2pc:移动端1移动端2桌面1.在PC端实现程序并调试我们建立一个Qt的Widgets程序,添加position,sensors模块。界面里支持设置目的地址、端口。界面里可以设置GPS与各个传感器的刷新速度。传感器使用Qt枚举,并创建刷新函数。传感器的主对话框类如下:#ifndefDLGSTP_H#defin

Mac 上 Qt6 加速下载官方步骤,无需 Fiddler、Nginx 或配置资料档案库

Mac上Qt6加速下载官方步骤,无需Fiddler、Nginx或配置资料档案库背景介绍操作步骤打开网站下载安装器查找可执行文件启动安装程序背景介绍QT官方仓库速度堪比百度网盘,直接启动下了一天没下好,既然国内那么多镜像站,那么理论上就可以使用镜像站进行加速。QT安装包提供了仓库地址的选项,但是仓库链接长什么样都不知道,试了几次都失败。无论是百度还是谷歌,搜到的大多是用Fiddler设置链接转发,还有Nginx反代,太麻烦了。Fiddler没有Mac端,且需要注册登录,还是试用版。Nginx配置太复杂,还要改hosts,实在非人类。因为清华镜像站一般带使用帮助,因此在清华镜像站上看了一下,还真是

360手机黑科技“位置穿越”功能修复 360手机位置穿越不能用了 360手机刷机

360手机黑科技“位置穿越”功能修复360手机位置穿越不能用了360手机刷机 参考:360手机-360刷机360刷机包twrp、root360刷机包360手机刷机:360rom.github.io【前言】360手机,内置的黑科技“位置穿越”,引用高德地图,技术嵌入方案,因360在其开发者后台,无人维护/停滞,而调用配量也有限,导致其功能失效。(约在22年中旬前后)。目前使用“位置穿越”功能,会提示,错误信息;但已有保存记录,仍保持原有状态。【目前解决方法】刷机(可恢复90%+以上)//推荐,特定版本更新地图包(使用原厂刷入方式,反之无效)维护360在高德地图开发者中的项目 //此后台管理和所有

Qt 中线程池的使用

1.线程池的原理我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务呢?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助

Qt笔记-自定义QSet,QHash的Key

官方文档已经说得很详细了。Ifyouwanttouseothertypesasthekey,makesurethatyouprovideoperator==()andaqHash()implementation.Example:#ifndefEMPLOYEE_H#defineEMPLOYEE_HclassEmployee{public:Employee(){}Employee(constQString&name,constQDate&dateOfBirth);...private:QStringmyName;QDatemyDateOfBirth;};inlinebooloperator==(c

【简单】使用ChatGPT和QT从零开始构建一个计算器应用

在这篇博文中,我将向大家展示如何使用ChatGPT和Qt来构建一个完整的计算器应用。我们将从零开始,逐步引导您完成整个项目,包括需求分析、软件设计、代码编写等环节。该项目代码全部由GPT编写,10分钟完成。一,项目概述本项目旨在使用ChatGPT和Qt技术构建一个功能完备的计算器应用。用户可以执行基本的算术运算,如加、减、乘、除,并且能够在界面上直观地展示输入的数字、运算符以及计算结果。二,技术栈在这个项目中,我们将使用以下技术和工具:ChatGPT:作为我们的智能辅助,提供项目开发的指导和解答。Qt6.2:作为GUI开发框架,用于创建计算器应用的用户界面和交互逻辑。三,项目实现1.需求分析我

Qt调用主界面ui

一、适用情景在其他类中使用主界面ui,this,控件操作等二、步骤首先,子类需要包含主界面的头文件和ui_xx.h文件,声明主界面类然后使用构造函数把主界面的指针传递给子类子类头文件:#ifndefONEUI_H#defineONEUI_H//首先,包含主界面头文件等#include"mainwindow.h"#include"ui_mainwindow.h"classMainWindow;//声明类classoneui{public:oneui(MainWindow*m_p);//构造函数传递父类指针MainWindow*on;//保存父类指针public:voidtest();};#end

【Qt5.12】Qt5.12安装教程[通俗易懂]

01.软件下载Qt5.12下载网址:Indexof/archive/qt/5.12/5.12.2选择Windows平台,Linux和Mac平台类似下载好之后的安装包:02.软件安装Step1:双击安装包,稍等片刻,然后点击nextStep2:如果没有账号,则选择skipStep3:Qt设置欢迎界面,选择下一步Step4:选择安装路径Step5:选择组件,然后选择下一步Step6:同意许可协议,然后选择下一步Step7:开始菜单快捷方式可以修改在菜单中显示的名字,然后下一步Step8:点击安装即可Step9:选择下一步Step10:完成Qt向导Step11:完成安装,打开软件03.软件测试Ste